{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Comparison cascade OMS vs direct OMS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "\n",
    "src_dir = os.path.abspath('../src')\n",
    "if src_dir not in sys.path:\n",
    "    sys.path.append(src_dir)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import math\n",
    "\n",
    "import Levenshtein\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import squarify\n",
    "from matplotlib_venn import venn2, venn2_circles\n",
    "\n",
    "from ann_solo import reader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# plot styling\n",
    "plt.style.use(['seaborn-white', 'seaborn-paper'])\n",
    "plt.rc('font', family='serif')\n",
    "sns.set_palette('Set1')\n",
    "sns.set_context('paper', font_scale=1.)    # single-column figure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "psms_dir = '../../data/processed/iprg2012/brute_force'\n",
    "\n",
    "psms_oms_shifted = reader.read_mztab_ssms(os.path.join(\n",
    "    psms_dir, 'bf_oms_shifted.mztab'))\n",
    "psms_oms_nocascade_shifted = reader.read_mztab_ssms(os.path.join(\n",
    "    psms_dir, 'bf_oms_nocascade_shifted.mztab'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# check which SSMs changed between cascade <-> no cascade\n",
    "columns = ['sequence', 'search_engine_score[1]', 'search_engine_score[2]',\n",
    "           'charge', 'exp_mass_to_charge', 'calc_mass_to_charge']\n",
    "psms_cascade = psms_oms_shifted[columns].join(\n",
    "    psms_oms_nocascade_shifted[columns], how='outer',\n",
    "    lsuffix='_cascade', rsuffix='_direct')\n",
    "\n",
    "for suffix in ['cascade', 'direct']:\n",
    "    psms_cascade[f'mass_diff_{suffix}'] = (\n",
    "        (psms_cascade[f'exp_mass_to_charge_{suffix}']\n",
    "         - psms_cascade[f'calc_mass_to_charge_{suffix}'])\n",
    "        * psms_cascade[f'charge_{suffix}'])\n",
    "    psms_cascade = psms_cascade.drop([f'exp_mass_to_charge_{suffix}',\n",
    "                                      f'calc_mass_to_charge_{suffix}',\n",
    "                                      f'charge_{suffix}'], axis=1)\n",
    "    psms_cascade[f'sequence_{suffix}'] = (psms_cascade[f'sequence_{suffix}']\n",
    "                                          .str.replace('I', 'L')\n",
    "                                          .str.replace(r'n?\\[\\d+\\]', ''))\n",
    "# also compare with the iPRG2012 consensus results\n",
    "psms_consensus = pd.read_csv(\n",
    "    '../../data/external/iprg2012/iprg2012ConsensusSpectrumIDcomparison.tsv',\n",
    "    sep='\\t', header=0, skipfooter=4, engine='python').rename(\n",
    "    columns={'bestSequence': 'sequence_consensus'})\n",
    "psms_consensus = psms_consensus.set_index(psms_consensus['Index1_de'] - 1)\n",
    "psms_consensus['sequence_consensus'] =\\\n",
    "    psms_consensus['sequence_consensus'].str.replace('I', 'L')\n",
    "psms_cascade = psms_cascade.join(psms_consensus['sequence_consensus'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def edit_distance(seq1, seq2, normed=False):\n",
    "    if not pd.isnull(seq1) and not pd.isnull(seq2):\n",
    "        dist = Levenshtein.distance(seq1, seq2)\n",
    "        if normed:\n",
    "            dist /= max(len(seq1), len(seq2))\n",
    "        return dist\n",
    "    else:\n",
    "        return math.inf\n",
    "\n",
    "psms_cascade['edit_dist'] = psms_cascade.apply(\n",
    "    lambda psm: edit_distance(psm['sequence_cascade'],\n",
    "                              psm['sequence_direct']),\n",
    "    axis=1)\n",
    "psms_cascade['edit_dist_norm'] = psms_cascade.apply(\n",
    "    lambda psm: edit_distance(psm['sequence_cascade'],\n",
    "                              psm['sequence_direct'], True),\n",
    "    axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x311.496 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "width = 7\n",
    "height = width / 1.618    # golden ratio\n",
    "fig, ax = plt.subplots(figsize=(width, height))\n",
    "\n",
    "set_cascade = set(psms_cascade.loc[\n",
    "    psms_cascade['sequence_cascade'].notnull(), 'sequence_cascade'].items())\n",
    "set_direct = set(psms_cascade.loc[\n",
    "    psms_cascade['sequence_direct'].notnull(), 'sequence_direct'].items())\n",
    "\n",
    "v = venn2([set_cascade, set_direct],\n",
    "          set_labels=['Cascade OMS', 'Direct OMS'],\n",
    "          set_colors=[next(ax._get_lines.prop_cycler)['color'],\n",
    "                      next(ax._get_lines.prop_cycler)['color']],\n",
    "          alpha=1., ax=ax)\n",
    "c = venn2_circles([set_cascade, set_direct], linewidth=1.0, ax=ax)\n",
    "\n",
    "# plt.savefig('cascade_venn.pdf', dpi=300, bbox_inches='tight')\n",
    "plt.show()\n",
    "plt.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "psms_match = psms_cascade[psms_cascade['sequence_cascade'].notnull() &\n",
    "                          psms_cascade['sequence_direct'].notnull() &\n",
    "                          (psms_cascade['sequence_cascade'] ==\n",
    "                           psms_cascade['sequence_direct'])]\n",
    "psms_different = psms_cascade[psms_cascade['sequence_cascade'].notnull() &\n",
    "                              psms_cascade['sequence_direct'].notnull() &\n",
    "                              (psms_cascade['sequence_cascade'] !=\n",
    "                               psms_cascade['sequence_direct'])]\n",
    "psms_unique_cascade = (psms_cascade[psms_cascade['sequence_cascade'].notnull()]\n",
    "                       .drop(psms_match.index, errors='ignore')\n",
    "                       .drop(psms_different.index, errors='ignore'))\n",
    "psms_unique_direct = (psms_cascade[psms_cascade['sequence_direct'].notnull()]\n",
    "                      .drop(psms_match.index, errors='ignore')\n",
    "                      .drop(psms_different.index, errors='ignore'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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wIABDBgwoN2HPptySYZgQUEB69ev58EHH8RkMnHttdeyZcsWoP5UivHjxxMaGkp0dDS9e/emtra20esjIiIYNGgQHh4epy3J88knn1BVVcX06dPJzc1l3759QH245eXludtysoawapCYmMioUaOIjY2lrKyMQ4cOERMTg8Fg4J577kGlUrF///5WlwZKTEwkNTWVe++9F4CNGzcSGhpKSUnJKe8NoFarEULgdDrJzs6ma9eurXofSZKk1qitreX7778nMDCQPn368PDDD3eI8GtwSYagl5cXaWlpvPbaa6jVarKysnjyyScBSElJ4eWXXyY+Ph6LxUJNTQ1jxoyhoKCATZs24eXlRXJyMrNmzQLqz0bctGkTeXl5bN26lQEDBrjf5+qrr2bjxo3MmTMHIQSFhYVs376dqVOn8vTTT1NSUoLRaHQ/f82aNZjNZj744AMmTpwIwAsvvMBbb71FeHg4RUVF3HPPPfj4+PDYY4/x4osv4u3tTVVVFTNmzODrr7/GbDazfv16vL29T/l6zZo1jB07lr179zJ37lwAPD09MRgM7rm/HTt2UFhYiNls5ptvvmHo0KHodDpmzZpF//79ZQhKknReCCE4dOgQX331FTqdji5dugB0qAAEWTatTRQXFyOEIDQ0lJ07d7J69Wp3qEqSJF3KhBDY61z8sms73377LUOGDGHgwIEdLvwaXJI9wQutvLychQsX0qNHD7Kzs3nggQcudJMkSZLanN1uZ+6HG8E/jijfAB566KEOf1yeDME2kJSUxLx58y50MyRJktqFEIK0tDQ++/xLfj5cyrU3RlJQqWDw8LrQTWuRDEFJkiTprLlcLj788ENyc3MZPHgwMYMiyS21khDihV7T8StzyhCUJEmSzlhdXR1WqxVvb28SExO5/vrr8fX1rZ8TdLjQa1RNrkjvaGQISpIkSa0mhCA9PZ0NGzYQHR3N2LFj6devn/u6oigYtB1zEUxTOn5ftROYNWsWixcvZsyYMYwZMwao33D/4osvNvua1NRUUlNT3d837AuUJElqK+Xl5axYsYJPPvmEPn36MHr06AvdpHMmQ7ADaNjcvmrVKry86ieS4+Li3Hsbm3vNySG4aNGiNm+nJEmdU8NOuurqalQqFQ899BBDhgxBo7n4BxMv/k9wjoQQCJsNxWA46/Fru93O7NmzCQ8PJyMjg0mTJrFq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\n",
      "text/plain": [
       "<Figure size 504x311.496 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(width, height))\n",
    "\n",
    "ax.scatter(psms_different['search_engine_score[1]_direct'],\n",
    "           psms_different['search_engine_score[1]_cascade'],\n",
    "           marker='.', label='conflicting', alpha=0.5)\n",
    "ax.scatter(psms_match['search_engine_score[1]_direct'],\n",
    "           psms_match['search_engine_score[1]_cascade'],\n",
    "           marker='.', label='identical', alpha=0.5)\n",
    "\n",
    "ax.plot((0, 1), (0, 1), ls='--', c='black', alpha=0.5)\n",
    "\n",
    "ax.set_xlim(0.25, 1)\n",
    "ax.set_ylim(0.25, 1)\n",
    "\n",
    "ax.set_xlabel('Direct OMS score')\n",
    "ax.set_ylabel('Cascade OMS score')\n",
    "\n",
    "ax.legend(title='SSM agreement')\n",
    "\n",
    "sns.despine()\n",
    "\n",
    "plt.show()\n",
    "plt.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# identical SSMs: 4025\n",
      "# conflicting SSMs: 702\n",
      "# unique SSMs cascade: 1284\n",
      "# unique SSMs direct: 293\n"
     ]
    }
   ],
   "source": [
    "print(f'# identical SSMs: {len(psms_match)}\\n'\n",
    "      f'# conflicting SSMs: {len(psms_different)}\\n'\n",
    "      f'# unique SSMs cascade: {len(psms_unique_cascade)}\\n'\n",
    "      f'# unique SSMs direct: {len(psms_unique_direct)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAAEeCAYAAAAZ5BURAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XtwVOX9x/FPEgwk5N4YLgsmiLgEFrAKBFsRE3C4TClaq7SKaaxyqXUFoRD9KS0oVcAKqYmgttUUWsTSIsQW8dJQO1YIIsVgSUKECCQBUXMBEkhwc35/MOwYYdlkw54NOe/XTGZyjufy3eNOPjzPec5zggzDMAQAgEUFB7oAAAACiSAEAFgaQQgAsDSCEABgaQQhAMDSCEIAgKURhAAASyMIAQCWRhACACyNIAQAWNolHYR2uz3QJQAALnGXdBACANBWBCEAwNIIQgCApRGEAABLIwgBAJZGEAIALI0gBABYGkEIALA0ghAAYGmd/HHQkpIS5ebmqm/fvioqKtLs2bN1+eWXa+nSpYqPj1d1dbXmzZunkJAQFRUV6dVXX1WXLl00dOhQjRkzxh8lAQBwXkGGYRgX+6Dbtm1TZGSkBg4cqM2bN2vbtm1KTk7W6dOnNWXKFGVlZWngwIG6+eabddddd2nlypWKiIjQD3/4Q61du1ahoaEtOo/dbldJScnFLr9VKmy9fd7XVnHoIlYCAPCFX7pGR4wYoYEDB0qSmpqaFBYWpoKCAiUnJ0uSHA6HCgoK1NjYqC+++EJRUVEKDg5W9+7dVVpa6o+SAAA4L7/eIzQMQ5s3b1ZGRoZqamrUtWtXSVJ4eLiqq6tVXV2tsLAw9/bh4eGqqak577Gys7Nlt9ub/QAA0FZ+uUd41nPPPaf09HR169ZNMTExqqurkyTV19crNjZWsbGxOnnypHv7+vp6xcTEnPdYTqdTTqez2TrCEADQVn5rEa5atUoOh0NDhw7Vli1blJKSoqKiIknS7t27lZKSotDQUMXHx+vYsWNqamrSkSNH1K9fP3+VBADAOfwyWGbr1q166KGH3KEWGRmprKwsLVmyRHFxcaqtrVVmZqZ71Ogrr7yizp07KyUlpVWjRhksAwBoK78EoVkIQgBAW/FAPQDA0ghCAIClEYQAAEsjCAEAlkYQAgAsjSAEAFgaQQgAsDSCEABgaQQhAMDSCEIAgKURhAAASyMIAQCWRhACACyNIAQAWBpBCACwNIIQAGBpBCEAwNIIQgCApRGEAABLIwgBAJbWyR8HLSws1Pz58zVr1iylpqbql7/8pcrKyiRJdXV1uvbaa/XYY4/p/vvv1/HjxyVJI0eO1LRp0/xRDgAAHvklCCsqKpScnOxeTk1N1eOPPy5JWrVqlQYNGiRJSk5OltPp9EcJAAC0iF+6RsePH99sOTU11f37Rx99pG9/+9uSpMOHD+vFF19UVlaWPv300wseMzs7W3a7vdkPAABt5ZcWoScff/yxHA6He/nOO++Uw+FQVVWVMjIylJeX53Ffp9N5TuuRMAQAtJWpg2U2btyoSZMmuZfPhmJcXJwMw1BVVZWZ5QAAYF4QNjQ06OTJk4qLi5MknThxQitXrpQknT59WvX19YqOjjarHAAAJPmpazQvL08lJSVyuVyKj4/XoEGD9Oabb+rmm292b3PZZZdp9+7dysnJ0eeff67MzEyFhIT4oxwAADwKMgzDCHQRvrLb7SopKQloDRW23j7va6s4dBErAQD4ggfqAQCWRhACACyNIAQAWBpBCACwNIIQAGBpXoMwKytLu3bt0j/+8Q/dcMMNev75582oCwAAU3gNws6dO+uaa67RH//4R/3973/XqVOnzKgLAABTeA3CY8eOaefOnerZs6diYmIUGhpqRl0AAJjCaxDabDY9/vjjmj59urZs2aLDhw+bURcAAKbwOLNMVVWVe17Qr6upqVFMTIzfC2sJZpYBALSVx7lGf/Ob32jixInnrH/99df15JNP+rUoAADM4jEIN2/erN27dys2NlZfbzTSNQoA6Eg8BuGWLVv06quvqrGxUbfffru6devmXg8AQEfh9e0TdXV1WrdunWpra3XbbbepV69eZtXmFfcIAQBt5XXUaNeuXTVu3DgdPXpUkydPNqMmAABMc8EgLC8v1y9/+UtNnjxZV1xxhd58802z6gIAwBQeg/CRRx5Renq6+vbtqzfffFPTp09XRESE8vLyzKwPAAC/8niPcPTo0brmmmvOmUmmpKRE69evN6U4b7hHCABoK4+jRufOnatx48ads/6f//ynXwsCAMBMHoPwmyF4drLt0aNH+7ciAABM5PEe4fLly7Vo0SJJUkFBgW644QalpaXptdde83rQwsJCTZo0yf3M4fr163XHHXfo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ACwt4M8RBhpvvmiZtLQ02Ww2SdLUqVN14403Brii9qOwsFDz58/XrFmzlJqaqsbGRi1dulTx8fGqrq7WvHnzFBISEugyA+6b12n9+vVau3atOnfuLElavXp1gCsMvJKSEuXm5qpv374qKirS7Nmzdfnll/N9+obzXaeCggKfv0+WDkLefNFyt956q9/mer3UVVRUKDk52b382muvKSkpSVOmTFFWVpby8/N18803B7DC9uGb10mSli1bpl69egWoovanurpaU6ZM0cCBA7V582b97ne/U3JyMt+nbzjfdRo8eLDP3ydLd4229M0XkHbs2KHf//73WrFihU6cOBHoctqV8ePHN1suKChw/8F3OBwqKCgIRFntzjevkyStWbNGL7zwgl5//fUAVNT+jBgxQgMHDpQkNTU1KSwsjO/TeZzvOkm+f58sHYSe3nyBc82dO1f33XefBgwYoMWLFwe6nHatpqZGXbt2lSSFh4eruro6wBW1T8OGDdO0adM0ffp0vfPOO9qxY0egS2o3DMPQ5s2blZGRwffpAr5+ndryfbJ0EPLmi5ZzOBySzkyS/t///jfA1bRvMTExqqurkyTV19crNjY2wBW1T71793ZPqThkyBDt2rUrwBW1H88995zS09PVrVs3vk8X8PXr1Jbvk6WDkDdftMzWrVv1n//8R5JUWVnpHjSD80tJSVFRUZEkaffu3cwT6cHy5cvlcrkk8b36ulWrVsnhcGjo0KHasmUL3ycPvnmd2vJ9svxcoxs2bFBpaalqamo0depURo2eR3FxsXJycuRwOFRWVqapU6fqqquuCnRZ7UZeXp5efvllXXXVVUpPT5fdbteSJUsUFxen2tpaZWZmWn6Un3Tudfrwww+1f/9+JSQk6Msvv9T8+fMVHGzpf5tr69ateuihh9SvXz9JUmRkpLKysvg+fcP5rtPw4cN9/j5ZPggBANZm7X9+AQAsjyAEAFgaQQgAsDSCEABgaQQhAMDSCELgItm+fbtuvfVW/fznP9eKFSu0YsUK3XfffSovL2+23aZNmzR06FD3ckZGhk6dOiVJys3N9XqeC+1/Pi05JmBlPD4BXEQPP/ywrrvuOt1+++2SpA8//FD9+vVTVFRUs+3S0tKUn59/zv6e1vu6XWu3BazI0m+fAPxp/fr1Sk5OVlRUlJqamjR//nxFREQoPj5ejY2NkqR3331XCxcu1KpVq1RcXKxjx44pOztbycnJGjNmjPtYLdk/LCxMixcv1lVXXaV9+/bpZz/7mf773/+6jzl8+HB1795dzzzzjAYNGqSioiLNmTNHMTExevDBBxUSEqL+/ftr+/btmjp1qkaPHq1jx47p6aef1hVXXKGDBw9q2LBh+v73v6/Vq1fr8OHDCg0NVWRkpO69996AXGPgojAAXDSZmZlGRkaGsWjRIuOee+4x9uzZYxiGYbz99tuG0+k0DMMw6urqjEGDBrn3mTJlinHo0CHDMAwjNTX1vMdtyf5vvfWWMX36dOPkyZPGoUOHjM9Ez+u6AAACbElEQVQ+++ycY1ZUVBjFxcWGYRjGW2+9ZSxevNgwDMPYtm2bMXnyZMMwDKOwsNCYPn26YRiGsXTpUuNPf/qTYRiGcfLkSeMf//iHUVpaatxyyy3Nzr9v3z6frhfQHtAiBC6yCRMm6Pbbb9fRo0fdbw3Yv3+/evfuLenMGwTi4uJadcyW7H/TTTeprKxM6enp6t27tx599NFztrnsssu0ceNGRUdHq7y8vNnbVhITEyVJsbGx7kme9+7dq+HDh0uSunTpogkTJuiNN96Qy+XSiy++KEnq3r27qqqq3K80Ay41DJYB/CQhIUFlZWX6/PPPdeWVV+rgwYOSzrxBoKqq6rz7BAcHyzAMFRcXN1vfkv1LS0s1adIk/eUvf1GPHj20ceNGSVJQUJCkM3PG/u53v1NcXJymT5+ucePGNdv/7HZfZ7fb3YN9Tpw4oU2bNunqq69WRESEpk2bpmnTpukHP/iBO0SBS1HIggULFgS6CKAj2L59uzZs2KAvv/xSBw4c0AcffKBNmzbJ4XBo2LBheu+99/T+++9r7969Ki4uVkREhKqrq5WXl6evvvpK119/vQ4cOKD3339fBw4c0IgRI9zHTkpK8rp/z5499dJLL2n//v06dOiQfvzjHys6OloffvihPv74Y9XU1GjEiBFau3atysvL9dFHH6moqEgOh0N//etfVVxcrGuuuUZvvPGG+2Ww48aN02uvvabS0lLl5+crNTVVffv21alTp/TGG29ox44dOnTokEaPHn3eIAUuBYwaBQBYGl2jAABLIwgBAJZGEAIALI0gBABYGkEIALA0ghAAYGkEIQDA0v4fEHjnMJlOwXoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 504x311.496 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "width = 7\n",
    "height = width / 1.618    # golden ratio\n",
    "fig, ax = plt.subplots(figsize=(width, height))\n",
    "\n",
    "# ax.hist(psms_different['edit_dist_norm'], bins=np.arange(0, 1.05, 0.05))\n",
    "ax.hist(psms_different['edit_dist'], bins=np.arange(0, 25, 1))\n",
    "\n",
    "ax.set_xlabel('Edit distance')\n",
    "ax.set_ylabel('Number of conflicting SSMs')\n",
    "\n",
    "sns.despine()\n",
    "\n",
    "plt.savefig('cascade_distance.pdf', dpi=300, bbox_inches='tight')\n",
    "plt.show()\n",
    "plt.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# conflicting SSMs with high sequence similarity: 310\n",
      "# conflicting SSMs with low sequence similarity: 392\n",
      "    (sequence similarity threshold = 3 amino acids)\n"
     ]
    }
   ],
   "source": [
    "threshold = 3\n",
    "num_high_sim = len(psms_different[psms_different['edit_dist'] <= threshold])\n",
    "num_low_sim = len(psms_different[psms_different['edit_dist'] > threshold])\n",
    "print(f'# conflicting SSMs with high sequence similarity: {num_high_sim}\\n'\n",
    "      f'# conflicting SSMs with low sequence similarity: {num_low_sim}\\n'\n",
    "      f'    (sequence similarity threshold = {threshold} amino acids)')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# conflicting SSMs cascade OMS corresponding with iPRG2012 consensus: 434\n",
      "# conflicting SSMs direct OMS corresponding with iPRG2012 consensus: 55\n",
      "# conflicting SSMs conflicting with iPRG2012 consensus: 87\n",
      "# conflicting SSMs not in iPRG2012 consensus: 126\n"
     ]
    }
   ],
   "source": [
    "psms_cascade_true = psms_different[psms_different['sequence_cascade'] ==\n",
    "                                   psms_different['sequence_consensus']]\n",
    "psms_direct_true = psms_different[psms_different['sequence_direct'] ==\n",
    "                                  psms_different['sequence_consensus']]\n",
    "psms_false = (psms_different[psms_different['sequence_consensus'].notnull()]\n",
    "              .drop(psms_cascade_true.index).drop(psms_direct_true.index))\n",
    "print(f'# conflicting SSMs cascade OMS corresponding with iPRG2012 consensus: '\n",
    "      f'{len(psms_cascade_true)}\\n'\n",
    "      f'# conflicting SSMs direct OMS corresponding with iPRG2012 consensus: '\n",
    "      f'{len(psms_direct_true)}\\n'\n",
    "      f'# conflicting SSMs conflicting with iPRG2012 consensus: '\n",
    "      f'{len(psms_false)}\\n'\n",
    "      f'# conflicting SSMs not in iPRG2012 consensus: '\n",
    "      f'{len(psms_different[~psms_different[\"sequence_consensus\"].notnull()])}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# unique SSMs cascade OMS corresponding with iPRG2012 consensus: 590 / 742\n",
      "# unique SSMs direct OMS corresponding with iPRG2012 consensus: 11 / 165\n"
     ]
    }
   ],
   "source": [
    "psms_unique_cascade_true = psms_unique_cascade[\n",
    "    (psms_unique_cascade['sequence_cascade'] ==\n",
    "     psms_unique_cascade['sequence_consensus']) &\n",
    "    (psms_unique_cascade['sequence_consensus'].notnull())]\n",
    "psms_unique_direct_true = psms_unique_direct[\n",
    "    (psms_unique_direct['sequence_direct'] ==\n",
    "     psms_unique_direct['sequence_consensus']) &\n",
    "    (psms_unique_direct['sequence_consensus'].notnull())]\n",
    "print(f'# unique SSMs cascade OMS corresponding with iPRG2012 consensus: '\n",
    "      f'{len(psms_unique_cascade_true)} / '\n",
    "      f'{len(psms_unique_cascade[psms_unique_cascade[\"sequence_consensus\"].notnull()])}\\n'\n",
    "      f'# unique SSMs direct OMS corresponding with iPRG2012 consensus: '\n",
    "      f'{len(psms_unique_direct_true)} / '\n",
    "      f'{len(psms_unique_direct[psms_unique_direct[\"sequence_consensus\"].notnull()])}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x1008 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_palette('Set3')\n",
    "\n",
    "width = 14\n",
    "height = width# / 1.618    # golden ratio\n",
    "fig, ax = plt.subplots(figsize=(width, height))\n",
    "\n",
    "psms_cascade_false = psms_different[psms_different['sequence_cascade'] !=\n",
    "                                    psms_different['sequence_consensus']]\n",
    "squares = {'identical': len(psms_match),\n",
    "           'unique cascade\\ncorrect': len(psms_unique_cascade_true),\n",
    "           'unique cascade\\nincorrect': len(psms_unique_cascade[psms_unique_cascade['sequence_consensus'].notnull()]) - len(psms_unique_cascade_true),\n",
    "           'unique direct\\ncorrect': len(psms_unique_direct_true),\n",
    "           'unique direct\\nincorrect': len(psms_unique_direct[psms_unique_direct['sequence_consensus'].notnull()]) - len(psms_unique_direct_true),\n",
    "           'conflicting\\ncascade correct': len(psms_cascade_true),\n",
    "           'conflicting\\ndirect correct': len(psms_direct_true),\n",
    "           'conflicting\\nincorrect': len(psms_false),\n",
    "           'conflicting\\nno consensus': len(psms_different[~psms_different['sequence_consensus'].notnull()]),}\n",
    "squares = dict((f'{key}\\n({value} SSMs)', value)\n",
    "               for (key, value) in squares.items())\n",
    "\n",
    "colors = sns.color_palette('Set1', len(squares))\n",
    "\n",
    "squarify.plot(sizes=squares.values(), color=colors, label=squares.keys(),\n",
    "              ax=ax, alpha=0.8, linewidth=1, edgecolor='black')\n",
    "\n",
    "ax.set_xticks([])\n",
    "ax.set_yticks([])\n",
    "\n",
    "plt.savefig('cascade_treemap.pdf', dpi=300, bbox_inches='tight')\n",
    "plt.show()\n",
    "plt.close()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
